home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1992-02-10 | 1.4 KB | 75 lines |
- IMPLEMENTATION MODULE FileReq;
-
-
-
- FROM ARP
- IMPORT FileRequest,FileRequester,FileRequesterPtr,WindowPtr,ReqFlags,
- ReqFlagSet,ReqFlags2,ReqFlagSet2,longFsize,longDsize;
-
- FROM ASCII
- IMPORT nul;
-
- FROM String
- IMPORT Insert,Length,last;
-
- FROM SYSTEM
- IMPORT ADDRESS,ADR,CAST;
-
- TYPE
- FileStringPtr=POINTER TO FileString;
-
-
-
- PROCEDURE MakeFRD( header,deffile,defdir: FileString;
- reqwindow: ADDRESS; x,y: INTEGER;
- VAR frd: FileRequestData);
- BEGIN
- WITH frd DO
- h:=header;
- f:=deffile;
- d:=defdir;
- fr.hail:=ADR(h);
- fr.file:=ADR(f);
- fr.dir:=ADR(d);
- fr.window:=reqwindow;
- fr.funcFlags:=ReqFlagSet{doColor};
- fr.flags2:=ReqFlagSet2{longPath};
- fr.function:=NIL;
- fr.leftEdge:=x;
- fr.topEdge:=y;
- END;
- END MakeFRD;
-
-
-
- PROCEDURE FileReq(VAR frd: FileRequestData;
- VAR name: FileString);
- VAR
- fsp: FileStringPtr;
- len: INTEGER;
- BEGIN
- fsp:=CAST(FileStringPtr,FileRequest(ADR(frd.fr)));
- IF (fsp=NIL) OR (Length(fsp^)=0) THEN
- name:="";
- ELSE
- fsp:=CAST(FileStringPtr,frd.fr.dir);
- name:=fsp^;
-
- len:=Length(name);
- IF (len>0) AND (name[len-1]#":") AND (name[len-1]#"/") THEN
- name[len]:="/";
- name[len+1]:=nul;
- END;
- fsp:=CAST(FileStringPtr,frd.fr.file);
- IF Length(fsp^)>0 THEN
- Insert(name,last,fsp^);
- ELSE
- name:="";
- END;
- END;
- END FileReq;
-
-
-
- END FileReq.
-